Skip to main content

Migration Guide from MAX to XMediator

Integration

This section helps you migrate from the AppLovin MAX SDK to the XMediator SDK in your ReactNative project.

Initialize the SDK Comparison

MAX

import AppLovinMAX, { Configuration } from "react-native-applovin-max";



AppLovinMAX.initialize("«your-SDK-key»").then((conf: Configuration) => {
// SDK is initialized, start loading ads
}).catch(error => {
// Failed to initialize SDK
});

XMediator

In the root of your app, usually in the App.tsx file, add the following code:

import { XMediatorProvider } from "react-native-xmediator";

export default function App() {
return (
<XMediatorProvider
appKey={"<YOUR_APP_KEY>"}
// other props
>
{/* your app code... */}
</XMediatorProvider>
);
}

For official documentation:


API Method Comparison

OperationMAXXMediator
HookTo start using banners, just call useBanner() hook. const { create, hide, show, isShowing } = useBanner();
Create BannerBannerAd.createAd(BANNER_AD_UNIT_ID, AdViewPosition.BOTTOM_CENTER);create({placementId: "<placement-id>",size: BannerSize.Phone,position: BannerPosition.Bottom,});
Show BannerBannerAd.showAd(«ad-unit-ID»);show("<placement-id>");
Hide BannerBannerAd.hideAd(«ad-unit-ID»);hide("<placement-id>");

Key Differences

FeatureMAXXMediator
Ad Unit IDYesPlacement ID
Ad FormatBanner, MRECBanner, MREC
PositionEnum (top, bottom, etc.)String ("top", "bottom", etc.)
SizeControlled by AdFormatControlled by BannerAd props
Event HandlingaddEventListener or propshook useBannerEvents
Reload/RefreshAutomatic, or via methodsAutomatic

Callback Comparison

EventMAXXMediator
HookuseBannerEvents({...});
LoadedonAdLoaded={(adInfo\: AdInfo)}onLoaded\: (placementId, loadResult)
Load FailedonAdLoadFailed={(errorInfo\: AdLoadFailedInfo)}
ClickedonAdClicked={(adInfo\: AdInfo)}onClicked\: (placementId)
ExpandedonAdExpanded={(adInfo\: AdInfo)}
CollapsedonAdCollapsed={(adInfo\: AdInfo)}
Revenue PaidonAdRonAdRevenuePaid={(adInfo\: AdRevenueInfo)}onImpression\: (placementId, impressionData)

For official documentation:


Interstitial Ads

API Method Comparison

OperationMAXXMediator
HooksTo start using Interstitial Ads, just call useInterstitial() hook. const { show, isR } = useInterstitial();
Load InterstitialInterstitialAd.loadAd("<ad-unit-id>")
Show InterstitialInterstitialAd.showAd("<ad-unit-id>")show("<placement-id>");
Check ReadyInterstitialAd.isReady("<ad-unit-id>")isReady("<placement-id>")

Key Differences

FeatureMAXXMediator
Ad Unit IDYesPlacement ID
LoadExplicitAuto loading
Show/Ready CheckYesYes
Auto RetryNoYes (exponential backoff)
Event Handlingconst initializeInterstitialAds = () => { ... }useInterstitialEvents({...});
Reload/RefreshManualAutomatic (with retry)

Callback Comparison

EventMAXXMediator
Hookconst initializeInterstitialAds = () => { ... }useInterstitialEvents({...});
LoadedInterstitialAd.addAdLoadedEventListener={(adInfo: AdInfo)}onLoaded: (placementId, loadResult)
Load FailedInterstitialAd.addAdLoadFailedEventListener((errorInfo: AdLoadFailedInfo)-
DisplayedInterstitialAd.addAdDisplayedEventListener((adInfo: AdInfo)onShowed: (placementId)
Show FailedInterstitialAd.addAdFailedToDisplayEventListener((adInfo: AdDisplayFailedInfo)onFailedToShow: (placementId)
ClickedInterstitialAd.addAdClickedEventListener((adInfo: AdInfo)onClicked: (placementId)
HiddenInterstitialAd.addAdHiddenEventListener((adInfo: AdInfo)onDismissed: (placementId)
Revenue PaidonImpression: (placementId, impressionData)

For official documentation:


Rewarded Ads

API Method Comparison

OperationMAXXMediator
HooksTo start using Rewarded Ads, just call useRewarded() hook. const { show, isReady } = useRewarded();
Load RewardedRewardedAd.loadAd("<ad-unit-ID>")
Show RewardedRewardedAd.showAd("<ad-unit-ID>")show("<placement-id>");
Check ReadyRewardedAd.isReady("<ad-unit-ID>")isReady("<placement-id>")
FeatureMAXXMediator
Ad Unit IDYesPlacement ID
LoadExplicitAuto loading
Show/Ready CheckYesYes
Auto RetryNoYes (exponential backoff)
Event Handlingconst initializeRewardedAds = () => { ... }useRewardedEvents({...});
Reload/RefreshManualAutomatic (with retry)

Callback Comparison

EventMAXXMediator SDK
Hookconst initializeRewardedAds = () => { ... }useRewardedEvents({...});
LoadedRewardedAd.addAdLoadedEventListener={(adInfo: AdInfo)}onLoaded: (placementId, loadResult)
Load FailedRewardedAd.addAdLoadFailedEventListener((errorInfo: AdLoadFailedInfo)-
DisplayedRewardedAd.addAdDisplayedEventListener((adInfo: AdInfo)onShowed: (placementId)
Show FailedRewardedAd.addAdFailedToDisplayEventListener((adInfo: AdDisplayFailedInfo)onFailedToShow: (placementId, showError)
ClickedRewardedAd.addAdClickedEventListener((adInfo: AdInfo)onClicked: (placementId)
HiddenRewardedAd.addAdHiddenEventListener((adInfo: AdInfo)onDismissed: (placementId)
Revenue PaidonImpression: (placementId, impressionData)
Earned RewardRewardedAd.addAdReceivedRewardEventListener((adInfo: AdRewardInfo)onEarnedReward: (placementId)

For official documentation:


Notes

  • Replace all Ad Unit IDs with Placement IDs when migrating to XMediator.
  • XMediator SDK for React Native manages some retries and refreshes automatically via the admin tool.
  • Review the official MAX React Native docs and XMediator React Native docs for advanced usage and integration tips.

Additional Notes

  • XMediator SDK auto-loads and retries ads after dismiss/fail (no manual retry logic needed).
  • Ad Space is available for analytics/tracking in XMediator.
  • Remove listeners to clean up ads in XMediator; explicit destroy is not needed.
  • Use the official documentation for the latest updates and best practices.

References: